package cn.fu.utils;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
/**
 * 上传文件，并通过日期分成不同的文件夹保存
 * @author 99fu
 *
 */
public class FileUploadUtils {

	/**
	 * 完成文件上传的同时返回路径path(相对路径)
	 * file:表示上传的文件
	 * name:表示上传的文件名
	 * */
	public static String uploadReturnPath(File file, String name) {
		//1:获取上传文件上传的路径位置，即upload的文件夹
		String basePath = ("D:/upload");
		//2：将每天上传的文件，使用日期格式的文件夹分开，创建日期文件夹，用来存放当前日期上传的附件
		String datePath = new SimpleDateFormat("/yyyy/MM/dd/").format(new Date());
		//使用传递的文件名，截取字符串，获取文件名的后缀
		String perfix = name.substring(name.lastIndexOf("."));
		//3：上传的文件名要指定唯一，可以使用UUID的方式，也可以使用日期作为文件名
		String filename = UUID.randomUUID().toString()+perfix;
		
		//创建日期的文件夹
		File dateFile = new File(basePath+datePath);
		if(!dateFile.exists()){
			dateFile.mkdirs();
		}
		
		//文件上传
		//目标文件
		File destFile = new File(basePath+datePath+filename);
		file.renameTo(destFile);
		//相对路径
		return "/upload"+datePath+filename;
	}
	
	public static void main(String[] args) {
		File srcFile = new File("F:\\dir\\a.txt");
		File destFile = new File("F:\\dir\\dir2xxxxxx\\a.txt");
		//完成文件上传（实质相当于复制）
//		try {
//			FileUtils.copyFile(srcFile, destFile);
//		} catch (IOException e) {
//			e.printStackTrace();
//		}
		//完成文件上传（实质相当于剪切）
		boolean flag = srcFile.renameTo(destFile);
		System.out.println(flag);
	}

}
